//在这个页面进行任务的增删改查,以及接口返回数据

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { CreateTaskDto } from './dto/create-task.dto';
import { UpdateTaskDto } from './dto/update-task.dto';
import { Task } from './entities/task.entity';

@Injectable()
export class TaskService {
  constructor(
    @InjectRepository(Task)
    private readonly taskRepository: Repository<Task>, // 注入 Task 实体的 Repository
  ) {}

  //创建数据
  async create(createTaskDto: CreateTaskDto) {
    const task = this.taskRepository.create(createTaskDto);
    return await this.taskRepository.save(task);
  }

  //分页查询数据
  async page(page: number, pageSize: number) {
    if (pageSize == -1) {
      const tasks = await this.taskRepository.find(); // 查询所有数据
      const total = tasks.length; // 获取总数
      return {
        total: total,
        list: tasks,
        msg: 'success',
      };
    }
    const skip = (page - 1) * pageSize;
    //返回数据
    const [tasks, total] = await this.taskRepository.findAndCount({
      skip, // 跳过的记录数
      take: pageSize, // 每页显示的记录数
    });
    return {
      total: total,
      list: tasks,
      msg: 'success',
    };
  }


  //查询单个详情
  async findOne(id: number) {
    return await this.taskRepository.findOne({ where: { id } }); // 根据 ID 查询任务
  }

  //
  async update(updateTaskDto: UpdateTaskDto) {
    const id = updateTaskDto.id;
    await this.taskRepository.update(id, updateTaskDto); // 更新任务
    return await this.findOne(id); // 返回更新后的任务
  }

  //
  async remove(id: number) {
    await this.taskRepository.delete(id); // 删除任务
    return { 
      msg: 'success'
    };
  }
}
